BonitoBook Overview

BonitoBook is a Julia-native interactive notebook system built on Bonito.jl that combines multi-language execution, AI integration, and modern web-based editing.

Runs everywhere

  • VSCode Plot Pane

  • Browser

  • Server deployments

  • HTML displays (Documenter, Pluto)

  • Electron applications

  • JuliaHub

  • Google Colab

Best Makie integration

🌌 3D Galaxy Explorer

Julia native

All components written in Julia

BonitoBook is built entirely in Julia using Bonito.jl, providing native performance and seamless integration with the Julia ecosystem.

Supports Julia commands

Ecosystem of Components vs Notebook

Easy to create new components in Julia

All components work standalone and can be reused

Simple to create new book types with different layouts

Full composability with existing Bonito apps

Default components

BonitoBook.Components

Button

Slider

Range: 1-100, Value: 50

Checkbox

Enabled

Dropdown

Number Input

Bonito widgets

Bonito widgets are great, but don't nicely interact with the BonitoBook theme:

Button

Slider

Range: 1-100, Value: 50

Checkbox

Enabled

Dropdown

Number Input

@manipulate

cmap
func
Typ
size
show_legend

LaTeX support

$$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$ $$\mathbf{A} = \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix}$$$

Python integration

Package management

Shared namespace

Python: None

Rich MIME support

Claude Code integration

BonitoBook includes first-class integration with Claude via the Claude Code CLI:

  • MCP Server: Julia RPC server for tool access

  • File operations: Claude can read/write project files

  • Code execution: Claude can run cells and see results

  • Chat interface: Built-in chat sidebar with image support

Example books demonstrating Claude integration:

  • examples/juliacon25.md - JuliaCon 25 video subtitle analysis

  • examples/mario.md - Interactive game

  • examples/penguins.md - Data analysis

File editor included

Integrated Monaco editor

  • Syntax highlighting for Julia, Python, Markdown, JSON, TOML

  • Code completion

  • Find/replace functionality

  • Multiple theme support (auto/light/dark)

@edit compatibility

Revise.jl integration

Changes from e.g. @edit are automatically applied.

Style customization

Edit styles/style.jl by pressing the paintcan icon to customize appearance:

Export/import options

Import formats

Jupyter notebooks (.ipynb)

Markdown files (.md)

Export formats

HTML export

Markdown export

Julia script export

Folder structure

Each book creates a structured project:

                                      mybook/
├── Project.toml         # Julia dependencies
├── Manifest.toml        # Dependency lock file
├── book.md              # Main content
├── styles/style.jl      # Custom styling
├── ai/
│   ├── config.toml      # AI configuration
│   └── system-prompt.md # Custom AI prompt
├── data/               # Data files
└── .versions/          # Automatic backups
                                    

This folder can be zipped and shared with all data, settings and style. With Project.toml and Manifest being part of the format, each notebook is reproducable.

Advanced features

Multi-language cells

Books support mixing Julia, Python, and Markdown cells seamlessly with shared variable namespaces.

Asynchronous execution

Code runs in background threads without blocking the UI. Multiple cells can execute concurrently.

Automatic backups

All changes are automatically saved to .versions/ with timestamps for version recovery.

Responsive design

UI adapts to different screen sizes and orientations. Works on desktop, tablet, and mobile browsers.

Theme system

Automatic dark/light mode detection with manual override support. Consistent theming across all components.

Collapsible sidebars for tools, file browser, chat, and custom widgets. Configurable positioning and behavior.

Live reloading

Files are watched for changes and automatically reloaded. Useful for development workflows with external editors.